The ability to store and transmit digital information is central to the operation of most electronic systems. Stored or transmitted digital information often becomes corrupted, however, due to the introduction of data errors during storing or transmission. Data errors can commonly be caused by, for example, noise in a transmission channel, errors generated during read/write processes, and physical defects in a storage medium. Accordingly, detecting and correcting data errors proves essential to ensuring accurate storage and transmission of digital information in electronic systems.
Error correction coding (“ECC”) may be utilized to detect data errors and make necessary corrections to corrupted digital information, thereby improving overall data storage and transmission reliability. FIG. 1 illustrates a block diagram of a generalized system 100 implementing ECC methods. Data received from transmitter 102 is encoded by encoder 104. During data encoding, error checking information (e.g., parity bits, redundant data) is added to the data (e.g., appended, prefixed). Noise and other contributing factors may cause data errors 106 to be introduced to the digital signal during either the transmission or the storing processes, thereby corrupting the digital information. Decoder 108 decodes the received information and determines whether the digital information has been corrupted during transmission or storage based on the embedded error checking information. If decoder 108 determines that data errors are present, the locations of the data errors are determined and corresponding corrections are made. Once decoded, the digital information is then passed to a receiver 110. Transmitter 102 and encoder 104 may be integrated into a single module. Similarly, decoder 106 may be integrated with receiver 110 in a single module.
Encoded digital information may be arranged in codewords, each codeword having corresponding embedded error checking information to ensure the integrity of the codeword during storing or transmission. In particular, codewords may be arranged in two-dimensional arrays called product codes. FIG. 2 illustrates a product code 200 comprised of row codewords arranged in rows 202, column codewords arranged in columns 204, and corresponding embedded error checking information 206-208. As illustrated, row and column codeword error checking information 206, 208 is appended to the corresponding row and column codewords, however, row and column error checking information 206, 208 may be added to other locations around (or within) a codeword. Additional error checking information 210 may also be included in the product code 200 to determine whether the row and column error checking information 206, 208 has been corrupted during storage or transmission. By employing two-dimensional error checking capability, use of product codes in ECC can increase overall error decoding accuracy.
In a system implementing ECC, decoder 108 must decode each row codeword and column codeword in a received product code 200 iteratively until the information contained within the received product code is free of errors. This decoding process requires multiple computations (thereby introducing latencies), consumes significant amounts of power, and requires considerable hardware layout area to implement.